package classesBD;

import aplicacao.funcoes;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Pessoal
 */
public class Relacionamento implements tabela{
  private Pessoa pessoa1;
  private Pessoa pessoa2;
  private TipoRelacionamento tipoRel;
  private Documento doc;

  public Relacionamento(Documento doc) {
    this.doc = doc;
  }
 

  @Override
  public int insere(boolean checaExistencia) {
      try {
          String[] campos;
          String query;
          if (tipoRel.getTipo().equalsIgnoreCase("Autoria")) {
            campos = new String[2];
            campos[0] = Integer.toString(pessoa1.insere(true));
            campos[1] = Integer.toString(doc.getIdDocumento());
            query = funcoes.montaInsert("AUTORES", campos);
          }else{
            int pes2 = 0;
            if(pessoa2 != null){
              pes2 = pessoa2.insere(true);
            }
            campos = new String[4];
            campos[0] = Integer.toString(pessoa1.insere(true));
            if (pes2==0){
              pes2 = pessoa1.getIdPessoa();
            }
            campos[1] = Integer.toString(pes2);
            campos[2] = Integer.toString(tipoRel.insere(true));
            campos[3] = Integer.toString(doc.getIdDocumento());
            query = funcoes.montaInsert("RELACIONAMENTO", campos);
          }
          Conexao.executa(query);
          Conexao.fecha();
          return 0;
      } catch (SQLException ex) {
          Logger.getLogger(Relacionamento.class.getName()).log(Level.SEVERE, null, ex);
          return 0;
      }
  }

  @Override
  public void buscaPorId(int id) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public void buscaPorNome(String nome) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public String existe(int id) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public int existe(String nome) {
    throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  }

  @Override
  public boolean preencheAttr(String attr, String valor) {
    String atributo = attr.toLowerCase();
    boolean result = true;
    switch(atributo){
      case "author":insereAutor(valor);
        break;
      case "editor":insereEditor(valor);
        break;  
      default: result = false;
    }  
    return result;
  }
  
  
  private void insereAutor(String nome){
      pessoa1 = new Pessoa(nome);
      tipoRel = new TipoRelacionamento(TipoRelacionamento.PESO_AUTORIA, true, "Autoria");  
  }
  
  private void insereEditor(String nome){
      pessoa1 = new Pessoa(nome);
      tipoRel = new TipoRelacionamento(TipoRelacionamento.PESO_EDITORACAO, true, "Editoracao");  
  }
}
